﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using ITCR.ProyectoAgricola.Datos;
using ITCR.ProyectoAgricola.Base;
using ITCR.ProyectoAgricola.Negocios;
using System.Threading;
using System.Data;
using System.Data.SqlTypes;
using System.Data.SqlClient;

namespace ITCR.ProyectoAgricola.Interfaz
{
    public partial class Default : System.Web.UI.Page
    {
        //Variables de registro
        public string vNombreRegistro;
        public string vPasswordRegistro;
        public string vPasswordConfirmacion;
        public string vCorreoElectronico;
        public bool flagCorrecto;

        //Variables log in
        string vUsuario;
        string vContraseña;

        cCUENTAUSUARIOBase nuevoIngreso = new cCUENTAUSUARIOBase();
        DataTable dataTableUsuarios = new DataTable();

        cEMPRESABase empresas = new cEMPRESABase();
        DataTable dataTableEmpresas = new DataTable();
        

        string[] arregloUsuario;
        string[] arregloPassword;
        string[] arregloConsecutivos;

        string userTemp;
        string passTemp;
        string consecutivoTemp;

        public bool banderaExisteEmpresa = false;

        public void mensajeConstruccion(Object sender, EventArgs e)
        {
            Response.Write("<script>alert('Esta función se encuentra en construcción. Gracias'); </script>");
        }

        public void ButtonIngresar_Click(object sender, EventArgs e)
        {            

            //Asignacion Variables con las que ingresa el usuario
            vUsuario = textUser.Text.ToString();
            vContraseña = textPassword.Text.ToString();
            dataTableUsuarios = nuevoIngreso.SeleccionarTodos();

            //Session["banderaInsumo"] = false;
            //Session["banderaImplementacion"] = false;
            //Session["banderaProduccion"] = false;

            if (dataTableUsuarios.Rows.Count == 0)
            {
                Response.Write("<script>alert('El usuario no existe'); </script>");
            }
            else
            {                
                arregloUsuario = new string[dataTableUsuarios.Rows.Count];
                arregloPassword = new string[dataTableUsuarios.Rows.Count];
                arregloConsecutivos = new string[dataTableUsuarios.Rows.Count];

                for (int i = 0; i < dataTableUsuarios.Rows.Count; i++)
                {
                    arregloUsuario[i] = dataTableUsuarios.Rows[i][0].ToString();
                    arregloPassword[i] = dataTableUsuarios.Rows[i][1].ToString();
                    arregloConsecutivos[i] = dataTableUsuarios.Rows[i][3].ToString();
                }

                if (vUsuario.Equals("") || vContraseña.Equals(""))
                {
                    Response.Write("<script>alert('Debe ingresar un usuario y una contraseña'); </script>");
                }
                else
                {
                    for (int i = 0; i < arregloUsuario.Length; i++)
                    {
                        userTemp = arregloUsuario[i];
                        passTemp = arregloPassword[i];
                        consecutivoTemp = arregloConsecutivos[i];
                        dataTableEmpresas = empresas.SeleccionarTodos();


                        if ((vUsuario.Equals(userTemp)) & (vContraseña.Equals(passTemp)))
                        {

                            for (int j = 0; j < dataTableEmpresas.Rows.Count; j++)
                            {
                                if (dataTableEmpresas.Rows[j][1].ToString().Equals("CE-" + consecutivoTemp))
                                {
                                    banderaExisteEmpresa = true;
                                    Session["banderaEmpresa"] = banderaExisteEmpresa;

                                    Session["banderaInsumo"] = false;
                                    Session["banderaImplementacion"] = false;
                                    Session["banderaProduccion"] = false;
                                    Session["banderaProyecto"] = false;


                                    int idEmpresaRegistrada = int.Parse(dataTableEmpresas.Rows[j][0].ToString());
                                    Session["idEmpresaRegistrada"] = idEmpresaRegistrada;

                                    //Response.Redirect("formularioEmpresaPerfil.aspx?idConsecutivo=" + consecutivoTemp + "&userName=" + userTemp);
                                    Session["userName"] = userTemp;
                                    Session["consecutivoSesion"] = consecutivoTemp;
                                    Response.Redirect("formularioEmpresaPerfil.aspx?idConsecutivo=" + consecutivoTemp);

                                    textUser.Text = "";
                                    vUsuario = "";
                                    vContraseña = "";
                                    return;
                                }
                            }
                            if (banderaExisteEmpresa == false)
                            {
                                Session["banderaEmpresa"] = banderaExisteEmpresa;

                                //Response.Redirect("formularioEmpresaPerfil.aspx?idConsecutivo=" + consecutivoTemp + "&userName=" + userTemp);
                                Session["userName"] = userTemp;
                                Session["consecutivoSesion"] = consecutivoTemp;
                                Response.Redirect("formularioEmpresaPerfil.aspx?idConsecutivo=" + consecutivoTemp);
                            }
                        }
                        else
                        {
                            int numero = i + 1;
                            if (numero == dataTableUsuarios.Rows.Count)
                            {
                                Response.Write("<script>alert('Usuario o Contraseña Incorrectos'); </script>");
                                vUsuario = "";
                                vContraseña = "";
                                textPassword.Text = "";
                            }
                            else
                            {
                                //No hace nada
                            }
                        }
                    }
                }
            }
            
        }



        //datos correctos, cambiar nombre, sse inserta el nuevo usuario
        public void botonRegistro_Click(Object sender, EventArgs e)
        {
            banderaExisteEmpresa = false;
            Session["banderaEmpresa"] = banderaExisteEmpresa;
            Session["banderaInsumo"] = false;
            Session["banderaImplementacion"] = false;
            Session["banderaProduccion"] = false;
            Session["banderaProyecto"] = false;

            if ((TextNameUserRegistro.Text.Equals("")) || (TextPasswordRegistro.Text.Equals("")) || (TextConfirmarPassword.Text.Equals("")) || (TextboxCorreoElectronico.Text.Equals("")))
            {
                Response.Write("<script>alert('Debe llenar todos los espacios'); </script>");
            }
            else
            {
                //Asignacion variables de registro de usuario
                vNombreRegistro = TextNameUserRegistro.Text.ToString();
                vPasswordRegistro = TextPasswordRegistro.Text.ToString();
                vPasswordConfirmacion = TextConfirmarPassword.Text.ToString();
                vCorreoElectronico = TextboxCorreoElectronico.Text.ToString();

                if (vPasswordRegistro == vPasswordConfirmacion)
                {
                    flagCorrecto = true;
                    //Response.Write("<script>alert('Se ha registrado correctamente'); </script>");
                    TextNameUserRegistro.Text = "";
                    cCUENTAUSUARIOBase nuevaCuenta = new cCUENTAUSUARIOBase();
                    
                    nuevaCuenta.NombreUsuario = vNombreRegistro;
                    nuevaCuenta.ContraseñaUsuario = vPasswordRegistro;
                    nuevaCuenta.CorreoElectronico = vCorreoElectronico;

                    nuevaCuenta.EstadoLogin = 1;
                    nuevaCuenta.Insertar();

                    DataTable usuariosTabla = new DataTable();
                    usuariosTabla = nuevaCuenta.SeleccionarTodos();
                    string consecutivoTemp = usuariosTabla.Rows[usuariosTabla.Rows.Count - 1][3].ToString();
                    
                    //Response.RedirectPermanent("formularioEmpresaPerfil.aspx?idConsecutivo=" + consecutivoRegistro + "&userName=" + vNombreRegistro);
                    Session["userName"] = vNombreRegistro;
                    Session["consecutivoSesion"] = consecutivoTemp;
                    Response.Redirect("formularioEmpresaPerfil.aspx?idConsecutivo=" + consecutivoTemp);                    
                }
                else
                {
                    flagCorrecto = false;
                    Response.Write("<script>alert('Las contraseñas introducidas no son iguales');</script>");

                }

            }
        }
    }
}